﻿var map = null; 
var center = null; 
 
function LoadMap(latitude, longitude, onMapLoaded) { 
    map = new VEMap('theMap'); 
    options = new VEMapOptions(); 
    options.EnableBirdseye = false; 
 
    // Makes the control bar less obtrusize. 
    map.SetDashboardSize(VEDashboardSize.Small); 
     
    if (onMapLoaded != null) 
        map.onLoadMap = onMapLoaded; 
 
    if (latitude != null && longitude != null) { 
        center = new VELatLong(latitude, longitude); 
    } 
 
    map.LoadMap(center, null, null, null, null, null, null, options); 
} 
 
function LoadPin(LL, name, description) { 
    var shape = new VEShape(VEShapeType.Pushpin, LL); 
 
    //Make a nice Pushpin shape with a title and description 
    shape.SetTitle("<span class=\"pinTitle\"> " + escape(name) + "</span>");
    if (description !== undefined) {
        shape.SetDescription("<p class=\"pinDetails\">" +
        escape(description) + "</p>");
    }
    map.AddShape(shape);
    points.push(LL);
    shapes.push(shape);
}

function FindAddressOnMap(where) {
    var numberOfResults = 20;
    var setBestMapView = true;
    var showResults = true;

    map.Find("", where, null, null, null,
           numberOfResults, showResults, true, true,
           setBestMapView, callbackForLocation);
} 
function callbackForLocation(layer, resultsArray, places, 
            hasMore, VEErrorMessage) { 
             
    clearMap(); 
 
    if (places == null)  
        return; 
 
    //Make a pushpin for each place we find 
    $.each(places, function(i, item) { 
        description = ""; 
        if (item.Description !== undefined) { 
            description = item.Description; 
        } 
        var LL = new VELatLong(item.LatLong.Latitude, 
                        item.LatLong.Longitude); 
                         
        LoadPin(LL, item.Name, description); 
    }); 
 
    //Make sure all pushpins are visible 
    if (points.length > 1) { 
        map.SetMapView(points); 
    } 
 
    //If we've found exactly one place, that's our address. 
    if (points.length === 1) {
        $("#Latitude").val(points[0].Latitude);
        $("#Longitude").val(points[0].Longitude);
    }
}

function clearMap() {
    map.Clear();
    points = [];
    shapes = [];
}  